package com.cloudwebrtc.voip.mediaengine;

public interface RTCVoiceEngine {
	/* EcModes */
	public int kEcUnchanged = 0;
	public int kEcDefault = 1;
	public int kEcConference = 2;
	public int kEcAec = 3;
	public int kEcAecm = 4;
	
	/* NsModes */
	public int kNsUnchanged = 0;
	public int kNsDefault = 1;
	public int kNsConference = 2;
	public int kNsLowSuppression = 3;
	public int kNsModerateSuppression = 4;
	public int kNsHighSuppression = 5;
	public int kNsVeryHighSuppression = 6;
	
	/* AgcModes */
	public int kAgcUnchanged = 0;
	public int kAgcDefault = 1;
	public int kAgcAdaptiveAnalog = 2;
	public int kAgcAdaptiveDigital = 3;
	public int kAgcFixedDigital = 4;

    /* AECM modes */
	public int kAecmQuietEarpieceOrHeadset = 0;
	// Quiet earpiece or headset use
	public int kAecmEarpiece = 1;         // most earpiece use
	public int kAecmLoudEarpiece = 2;     // Loud earpiece or quiet speakerphone use
	public int kAecmSpeakerphone = 3;     // most speakerphone use (default)
	public int kAecmLoudSpeakerphone = 4; // Loud speakerphone
	
    public int SetAECMode(int enabled, int mode);

    public int SetAGCMode(int enabled, int mode);

    public int SetNSMode(int enabled, int mode);

    public int SetSpeakerVolume(int volume);

    public int SetMicVolume(int volume);

    public  int GetSpeakerVolume();

    public  int GetMicVolume();

    public  int GetSpeechInputLevel();

    public int GetNumOfPlayoutDevices();

    public int GetNumOfRecordingDevices();

    public String GetRecordingDeviceName(int index);

    public String GetPlayoutDeviceName(int index);

    public int SetPlayoutDevice(int index);

    public int SetRecordingDevice(int index);

    public int SetLoudspeakerStatus(boolean yesno);
}
